-- @owner: xue-xinyi610
-- @date: 2025/2/20
-- @testpoint: I8XDZ2 通过禁用用户触发器，执行成功。。

-- 步骤pre 1
drop table if exists test_table;

-- 步骤pre 2
CREATE TABLE test_table (id1 INT, id2 INT, id3 INT, user_id INT);  -- 添加 user_id 列，用于记录哪个用户进行的操作

-- 步骤pre 3
drop function if exists user_trigger_function;

-- 步骤pre 4
-- 创建一个触发器函数，基于用户ID进行相应操作
CREATE FUNCTION user_trigger_function() RETURNS TRIGGER AS
$$
DECLARE
BEGIN
    -- 假设当用户ID为特定值时，更新 test_table 中的数据
    IF NEW.user_id = 1 THEN
        UPDATE test_table SET id2 = 10 WHERE id1 = 1;
    ELSE
        UPDATE test_table SET id2 = 5 WHERE id1 = 1;
    END IF;
    RETURN NEW;
END
$$ LANGUAGE PLPGSQL;/

-- 步骤pre 5
drop trigger if exists user_trigger ON test_table;

-- 步骤pre 6
-- 创建一个触发器，基于用户ID进行操作
CREATE TRIGGER user_trigger
BEFORE INSERT ON test_table
EXECUTE PROCEDURE user_trigger_function();/

-- 步骤pre 7
-- 禁用用户触发器
ALTER TABLE test_table DISABLE TRIGGER user_trigger;

-- 步骤test 1
-- 禁用触发器后进行插入操作，触发器不会生效
INSERT INTO test_table (id1, id2, id3, user_id) VALUES (1, 0, 0, 1); -- 触发器不会被调用

-- 步骤post 1
-- 确保禁用触发器
SELECT * FROM test_table;

-- 步骤post 2
drop trigger user_trigger on test_table;

-- 步骤post 3
drop function user_trigger_function;

-- 步骤post 4
